#! /usr/bin/env python

import os
import string

import pygame
import pygame.draw
import pygame.event
import pygame.font
from pygame.locals import *


def carrega_som(name):
    caminho = os.path.join('sons', name)
    try:
        som = pygame.mixer.Sound(caminho)
    except pygame.error, message:
        print 'Cannot load sound:', wav
        raise SystemExit, message
    return som

def carrega_imagem(nome):
    caminho = os.path.join('imagens', nome)
    try:
        imagem = pygame.image.load(caminho)
    except pygame.error:
        print 'Erro ao carregar imagem: ', caminho
    return imagem.convert_alpha()

def carrega_arquivo(nome, tipo="r"):
    caminho = os.path.join('arquivos', nome)
    if tipo == "r":
        try:
            arquivo = open(caminho, 'r')
        except IOError:
            print "Nao foi possivel ler o arquivo " + nome + "!"
        return arquivo
    elif tipo == "w":
        try:
            arquivo = open(caminho, 'w')
        except IOError:
            print "Nao foi possivel ler o arquivo " + nome + "!"
        return arquivo

def captura_tecla():
    while 1:
        event = pygame.event.poll()
        if event.type == KEYDOWN:
            return event.key
        else:
            pass

def caixa_texto(menssagem):
    tela = pygame.display.get_surface()
    fonte = pygame.font.Font(None, 18)
    pygame.draw.rect(tela, (0, 0, 0), ((tela.get_width() / 2) - 100, (tela.get_height() / 2) - 30, 200, 20), 0)
    pygame.draw.rect(tela, (255, 255, 255), ((tela.get_width() / 2) - 102, (tela.get_height() / 2) - 32, 204, 24), 1)
    if len(menssagem) != 0:
        tela.blit(fonte.render(menssagem, 1, (255, 255, 255)), ((tela.get_width() / 2) - 100, (tela.get_height() / 2) - 30))
    pygame.display.flip()

def entrada_usuario(texto):
    pygame.font.init()
    string_atual = []
    caixa_texto(texto + ": " + string.join(string_atual, ""))
    while 1:
        inkey = captura_tecla()
        if inkey == K_BACKSPACE:
            string_atual = string_atual[0:-1]
        elif inkey == K_RETURN:
            break
        elif inkey <= 127:
            if len(string_atual) < 10:
                string_atual.append(chr(inkey))
        caixa_texto(texto + ": " + string.join(string_atual, ""))
    return string.join(string_atual, "")
